#include <header.h>

int main(){

    int fd_w = open("1.pipe", O_WRONLY);
    int fd_r = open("2.pipe", O_RDONLY);

    while(1){

        fd_set set;
        FD_ZERO(&set);
        FD_SET(STDIN_FILENO, &set);
        FD_SET(fd_r, &set);

        select(fd_r+1, &set, NULL, NULL, NULL);

        // 走到这:  意味着要么标准输入有输入,  要么对方给我发信息 
        if(FD_ISSET(STDIN_FILENO, &set)){
            // 有标准输入
            char buf[100] = {0};
            read(STDIN_FILENO, buf, sizeof(buf));
            write(fd_w, buf, sizeof(buf));
        }
        if(FD_ISSET(fd_r, &set)){
            char buf[100] = {0};
            size_t ret = read(fd_r, buf, sizeof(buf));
            if(ret == 0){
                // 说明select觉得2.pipe可读
                // 但是去读2.pipe又发现没有读到数据
                // -> 对方把写端关闭 -> 对方退出

                break;
            }
            printf("buf: %s  \n", buf);
        }
    }
    close(fd_r);
    close(fd_w);
    return 0;
}

